var form
var table
var layer
var knowledgebase_active = null
var G_type
var G_id
var G_authId = JSON.parse(localStorage.getItem('userInfo')).authId; //1-管理员 2-普通用户
var G_fileArr = []
$(document).ready(function () {
  initLayui()
  initKnowledgebaseList()
})

function initLayui() {
  layui.use(function () {
    form = layui.form;
    table = layui.table;
    layer = layui.layer;

    // 输入框点缀事件
    form.on('input-affix(search)', function (data) {
      getKnowledgebaseFilesList($('.knowledgebase-list li.active').data('id'))
      return false;
    });

    // 保存知识库
    form.on('submit(add-form)', function (data) {
      if (G_type == '1') {
        var params = {
          knowledge_base_name: data.field.knowledge_base_name,
          vector_store_type: 'pg',
          embed_model: 'bge-large-zh',
        }
        $.ajax({
          url: '/langchain' + '/knowledge_base/create_knowledge_base',
          type: 'post',
          contentType: "application/json",
          data: JSON.stringify(params),
          success: function (result) {
            var code = result.code
            if (code == 200) {
              var obj = {
                id: null,
                cnName: data.field.cnName,
                engName: data.field.knowledge_base_name,
                kbInfo: data.field.kbInfo,
                vsType: 'pg',
                embedModel: 'bge-large-zh',
                type: data.field.type,
              }
              saveKnowledgebase(obj)
            } else if (code == 404) {
              layer.msg(result.msg)
            }
          }
        });
      } else {
        var params = {
          knowledge_base_name: data.field.knowledge_base_name,
          kb_info: data.field.kbInfo,
        }
        $.ajax({
          url: '/langchain' + '/knowledge_base/update_info',
          type: 'post',
          contentType: "application/json",
          data: JSON.stringify(params),
          success: function (result) {
            var code = result.code
            if (code == 200) {
              var obj = {
                id: G_id,
                cnName: data.field.cnName,
                engName: data.field.knowledge_base_name,
                kbInfo: data.field.kbInfo,
                vsType: 'pg',
                embedModel: 'bge-large-zh',
                type: data.field.type,
              }
              saveKnowledgebase(obj)
            }
          }
        });
      }

      return false;
    })

    form.on('select(select-search)', function (data) {
      getKnowledgebaseFilesList($('.knowledgebase-list li.active').data('id'))
    });

    form.verify({
      checkCnName: function (value, elem) {
        if (/[\u4E00-\u9FA5]/g.test(value)) {
          return '不支持中文命名';
        }
      },
    })

    // 上传文件
    form.on('submit(upload-form)', function (data) {
      if (G_fileArr.length == 0) {
        layer.msg("请先选择文件");
      } else {
        var arr = []
        var formData = new FormData();
        $.each(G_fileArr, function (i, e) {
          arr.push({
            fileName: e.name,
            kbName: $('.knowledgebase-list li.active').data('engname')
          })
          formData.append("files", e)
        })
        var params = {
          files: arr
        }
        layer.load(0)

        AjaxRequest('/kb/file/save', callBack, params, 'post')

        function callBack(result) {
          G_fileArr = []
          if (result.status == 200) {
            formData.append("knowledge_base_name", $('.knowledgebase-list li.active').data('engname'))
            formData.append("override", false)
            formData.append("to_vector_store", true)
            formData.append("chunk_size", data.field.chunk_size)
            formData.append("chunk_overlap", data.field.chunk_overlap)
            formData.append("zh_title_enhance", data.field.zh_title_enhance == 'on' ? true : false)

            $.ajax({
              url: '/langchain' + '/knowledge_base/upload_docs',
              type: 'post',
              data: formData,
              dataType: "json",
              cache: false,
              processData: false,
              contentType: false,
              success: function (result) {
                if (result.code == 200) {
                  layer.closeAll()
                  layer.msg('上传成功')
                  var knowledgebase_name = $('.knowledgebase-list li.active').data('id')
                  getKnowledgebaseFilesList(knowledgebase_name)
                } else {
                  layer.msg('上传失败')
                }
              }
            })
          } else {
            layer.msg('保存失败')
          }
        }
      }

      return false;
    })

  })
}
// 初始化知识库列表
function initKnowledgebaseList() {
  AjaxRequest('/kb/list', callBack)

  function callBack(result) {
    if (result.status == 200) {
      var data = result.result
      var str = ''
      $.each(data, function (i, e) {
        if (!knowledgebase_active) {
          var display = ''
          if (e.type == '2' && G_authId == '2') {
            display = 'none'
          }
          str += `<li class="${i == 0 ? 'active' : ''}" data-engname="${e.engName}" data-id="${e.id}" data-type="${e.type}" onclick="getKnowledgebaseFilesList('${e.id}')">
                      <img src="../static/img/icon15.png">
                      <span>${e.cnName}</span>
                      <div class="operate-icon" style="position: absolute;right: .05rem;display:${display}">
                        <i class="layui-icon layui-icon-edit" onclick='showAddWindow("2",${ JSON.stringify(e)})'></i>
                        <i class="layui-icon layui-icon-delete" onclick='showDelWindow(${ JSON.stringify(e)})'></i>
                      </div>
                    </li>`
        } else {
          var display = ''
          if (e.type == 2 && G_authId == '2') {
            display = 'none'
          }
          str += `<li class="${knowledgebase_active == e.id ? 'active' : ''}" data-engname="${e.engName}" data-id="${e.id}" data-type="${e.type}" onclick="getKnowledgebaseFilesList('${e.id}')">
                      <img src="../static/img/icon15.png">
                      <span>${e.cnName}</span>
                      <div class="operate-icon" style="position: absolute;right: .05rem;display:${display}">
                        <i class="layui-icon layui-icon-edit" onclick='showAddWindow("2",${ JSON.stringify(e)})'></i>
                        <i class="layui-icon layui-icon-delete" onclick='showDelWindow(${ JSON.stringify(e)})'></i>
                      </div>
                    </li>`
        }

      })

      $('.knowledgebase-list').empty().append(str)

      var li = $('.operate-icon i');
      for (var i = 0; i < li.length; i++) {
        li[i].addEventListener('click', function (e) {
          e.stopPropagation()
        }, false); //阻止它的冒泡事件
      }

      if (!knowledgebase_active && data.length > 0) {

        getKnowledgebaseFilesList(data[0].id)

      }

      // 知识库列表点击事件
      $('.knowledgebase-list li').click(function (e) {
        knowledgebase_active = e.currentTarget.getAttribute("data-id")
        $(e.currentTarget).addClass('active').siblings().removeClass('active')
      })
    } else {
      layer.msg('保存失败')
    }
  }

}

// 获取知识库内文件列表
function getKnowledgebaseFilesList(kbId) {
  var type = $('.knowledgebase-list li.active').data('type')
  if (type == '2' && G_authId == '2') {
    $('.tool-btns').hide()
  } else {
    $('.tool-btns').show()
  }

  layui.use('table', function () {
    var height = $('.right-block').height() - 90

    //第一个实例
    table.render({
      title: '',
      height: height,
      text: {
        none: '暂无数据'
      },
      elem: '#table',
      skin: 'nob',
      even: true,
      size: 'lg',
      headers: {
        SessionId: JSON.parse(localStorage.getItem('userInfo')).sessionId
      },
      url: ajaxPrefix() + '/kb/file/list',
      where: {
        kbId: kbId,
        vectorStatus: $('#vectorStatus-select').val(),
        name: $('#name-search').val()
      },
      parseData: function (res) { //res 即为原始返回的数据
        return {
          "code": res.status == 200 ? 0 : 1, //解析接口状态
          "msg": res.message, //解析提示文本
          "count": res.result.total, //解析数据长度
          "data": res.result.data //解析数据列表
        };
      },
      request: {
        pageName: 'pageNum', //页码的参数名称，默认：page
        limitName: 'pageSize' //每页数据量的参数名，默认：limit
      },
      page: true,
      limits: [10, 20, 30, 40, 50, 60, 70, 80, 90],
      cols: [
        [ //标题栏
          {
            type: 'checkbox',
          },
          {
            field: 'fileName',
            title: '文件名',
            align: 'left',
          },
          // {
          //   field: 'documentLoaderName',
          //   title: '文档加载器',
          //   align: 'center',
          //   width: 270
          // },
          // {
          //   field: 'textSplitterName',
          //   title: '分词器',
          //   align: 'center',
          // },
          {
            field: 'docsCount',
            title: '文档数量',
            align: 'center',
            width: 100
          },
          {
            title: '向量库',
            align: 'center',
            templet: function (d) {
              return `<img style="width:.18rem;height:.18rem" src="../static/img/icon1${d.vectorStatus == 1 ? '6' : '7'}.png">`
            },
            width: 100
          },
          {
            title: '操作',
            align: 'center',
            width: 180,
            hide: type == '2' && G_authId == '2',
            templet: function (d) {
              let res = JSON.stringify(d);
              return `<div class="operate-col">
                        <div class="operate-item" title="重新添加至向量库" onclick='showReUploadFileWindow("1",${res})'>
                          <i class="layui-icon layui-icon-add-circle"></i>
                        </div>
                        <div class="operate-item" title="从向量库删除" onclick='showDelFileWindow("1","1",${res})'>
                          <i class="layui-icon layui-icon-reduce-circle"></i>
                        </div>
                        <div class="operate-item" title="从知识库删除" onclick='showDelFileWindow("1","2",${res})'>
                          <i class="layui-icon layui-icon-delete"></i>
                        </div>
                      </div>`
            }
          },
        ]
      ]
    });

    table.on('row(table)', function (obj) {
      // var data = obj.data; // 得到当前行数据
      // var dataCache = obj.dataCache; // 得到当前行缓存数据，包含特定字段 --- 2.8.8+
      // var index = obj.index; // 得到当前行索引
      // var tr = obj.tr; // 得到当前行 <tr> 元素的 jQuery 对象
      // var options = obj.config; // 获取当前表格基础属性配置项
      // obj.del() // 删除当前行
      // obj.update(fields, related);  // 修改行数据
      // obj.setRowChecked(opts); // 设置行选中状态
      // layer.open({
      //   type: 1,
      //   shadeClose: false,
      //   move: false,
      //   closeBtn: 2,
      //   skin: 'default-layer',
      //   area: ['8rem', '6rem'],
      //   title: '文档列表',
      //   content: `<div class="window-table">
      //               <table class="layui-hide" id="window-table"></table>
      //             </div>`,
      //   success: function (layero, index) {
      //     table.render({
      //       title: '',
      //       height: height,
      //       text: {
      //         none: '暂无数据'
      //       },
      //       elem: '#window-table',
      //       skin: 'nob',
      //       even: true,
      //       size: 'lg',
      //       headers: {
      //         SessionId: JSON.parse(localStorage.getItem('userInfo')).sessionId
      //       },
      //       // url: ajaxPrefix() + '/chat/question/list/page',
      //       // where: {
      //       //   kbId: params.kbId,
      //       //   chatRoleId: params.chatRoleId,
      //       // },
      //       // parseData: function (res) { //res 即为原始返回的数据
      //       //   return {
      //       //     "code": res.status == 200 ? 0 : 1, //解析接口状态
      //       //     "msg": res.message, //解析提示文本
      //       //     "count": res.result.total, //解析数据长度
      //       //     "data": res.result.data //解析数据列表
      //       //   };
      //       // },
      //       // request: {
      //       //   pageName: 'pageNum', //页码的参数名称，默认：page
      //       //   limitName: 'pageSize' //每页数据量的参数名，默认：limit
      //       // },
      //       page: true,
      //       limits: [10, 20, 30, 40, 50, 60, 70, 80, 90],
      //       data: [{
      //         name: `设备管理与维修2021 №5（下）
      //         0引言
      //         高压电缆终端头是将电缆与其他电气设备连接的部件，与
      //         电缆本体相比，终端头是最薄弱环节，有数据显示其约占电缆
      //         线路故障的 70%。从西部超导材料科技股份有限公司（以下简
      //         称“公司”）目前出现的几次高压电缆故障来看，也确实如此，2#
      //         高压线路 AH1 和 AH4 开关、1# 高压线路 14G 开关均出现过电
      //         缆终端头爬电、高压接地、短路状况。10 kV 配电网线的安全运行是保障公司供电稳定性的基础`
      //       }, {
      //         name: `设备管理与维修2021 №5（下）
      //         0引言
      //         高压电缆终端头是将电缆与其他电气设备连接的部件，与
      //         电缆本体相比，终端头是最薄弱环节，有数据显示其约占电缆
      //         线路故障的 70%。从西部超导材料科技股份有限公司（以下简
      //         称“公司”）目前出现的几次高压电缆故障来看，也确实如此，2#
      //         高压线路 AH1 和 AH4 开关、1# 高压线路 14G 开关均出现过电
      //         缆终端头爬电、高压接地、短路状况。10 kV 配电网线的安全运行是保障公司供电稳定性的基础`
      //       }, {
      //         name: `设备管理与维修2021 №5（下）
      //         0引言
      //         高压电缆终端头是将电缆与其他电气设备连接的部件，与
      //         电缆本体相比，终端头是最薄弱环节，有数据显示其约占电缆
      //         线路故障的 70%。从西部超导材料科技股份有限公司（以下简
      //         称“公司”）目前出现的几次高压电缆故障来看，也确实如此，2#
      //         高压线路 AH1 和 AH4 开关、1# 高压线路 14G 开关均出现过电
      //         缆终端头爬电、高压接地、短路状况。10 kV 配电网线的安全运行是保障公司供电稳定性的基础`
      //       }, {
      //         name: `设备管理与维修2021 №5（下）
      //         0引言
      //         高压电缆终端头是将电缆与其他电气设备连接的部件，与
      //         电缆本体相比，终端头是最薄弱环节，有数据显示其约占电缆
      //         线路故障的 70%。从西部超导材料科技股份有限公司（以下简
      //         称“公司”）目前出现的几次高压电缆故障来看，也确实如此，2#
      //         高压线路 AH1 和 AH4 开关、1# 高压线路 14G 开关均出现过电
      //         缆终端头爬电、高压接地、短路状况。10 kV 配电网线的安全运行是保障公司供电稳定性的基础`
      //       }, {
      //         name: `设备管理与维修2021 №5（下）
      //         0引言
      //         高压电缆终端头是将电缆与其他电气设备连接的部件，与
      //         电缆本体相比，终端头是最薄弱环节，有数据显示其约占电缆
      //         线路故障的 70%。从西部超导材料科技股份有限公司（以下简
      //         称“公司”）目前出现的几次高压电缆故障来看，也确实如此，2#
      //         高压线路 AH1 和 AH4 开关、1# 高压线路 14G 开关均出现过电
      //         缆终端头爬电、高压接地、短路状况。10 kV 配电网线的安全运行是保障公司供电稳定性的基础`
      //       }, {
      //         name: `设备管理与维修2021 №5（下）
      //         0引言
      //         高压电缆终端头是将电缆与其他电气设备连接的部件，与
      //         电缆本体相比，终端头是最薄弱环节，有数据显示其约占电缆
      //         线路故障的 70%。从西部超导材料科技股份有限公司（以下简
      //         称“公司”）目前出现的几次高压电缆故障来看，也确实如此，2#
      //         高压线路 AH1 和 AH4 开关、1# 高压线路 14G 开关均出现过电
      //         缆终端头爬电、高压接地、短路状况。10 kV 配电网线的安全运行是保障公司供电稳定性的基础`
      //       }],
      //       cols: [
      //         [ //表头
      //           {
      //             field: 'name',
      //             title: '内容',
      //             align: 'center',
      //             edit: 'textarea'
      //           },
      //           {
      //             field: '',
      //             title: '操作',
      //             align: 'center',
      //             templet: function (d) {
      //               let res = JSON.stringify(d);
      //               return `<div class="operate-col">
      //                         <div class="operate-item" onclick='showAddWindow("2",${res})'>
      //                           <i class="layui-icon layui-icon-edit"></i>
      //                           编辑
      //                         </div>
      //                         <div class="operate-item" onclick='showDelWindow(${res})'>
      //                           <i class="layui-icon layui-icon-delete"></i>
      //                           删除
      //                         </div>
      //                       </div>`
      //             },
      //           },
      //         ]
      //       ]
      //     });
      //   }
      // });
    });

  });
}

// 新建知识库弹窗
function showAddWindow(type, res) { //type:1新增 2编辑
  G_type = type
  layer.open({
    type: 1,
    shadeClose: false,
    move: false,
    closeBtn: 2,
    skin: 'default-layer',
    area: ['10.35rem', 'auto'],
    title: type == '1' ? '新增' : '编辑',
    content: `<div id="add-from" class="layui-form" lay-filter="saveForm" style="padding: .2rem 0.6rem;color:#E4EFFF">
                <div class="layui-form-item">
                  <div class="layui-inline" style="width: calc(50% - 20px);">
                    <div class="layui-form-item">
                      <div>知识库名称：</div>
                      <div style="margin-top: .1rem;">
                        <input type="text" name="knowledge_base_name" ${type == '2' ? 'readonly' : ''} lay-verify="required|checkCnName" placeholder="不支持中文命名" class="layui-input">
                      </div>
                    </div>
                    <div class="layui-form-item">
                      <div>关联中文名称：</div>
                      <div style="margin-top: .1rem;">
                        <input type="text" name="cnName" lay-verify="required" class="layui-input">
                      </div>
                    </div>
                  </div>
                  <div class="layui-inline" style="width: calc(50% - 20px);">
                    <div class="layui-form-item">
                      <div>类型：</div>
                      <div style="margin-top: .1rem;">
                        <select name="type">
                          <option value="1">公共</option>
                          <option value="2">私有</option>
                        </select>
                      </div>
                    </div>
                    <div class="layui-form-item">
                      <div>知识库简介：</div>
                      <div style="margin-top: .1rem;">
                        <input type="text" name="kbInfo" lay-verify="required" class="layui-input"></input>
                      </div>
                    </div>
                  </div>
                </div>
                <div class="layui-form-item" style="text-align:center">
                  <button type="submit" class="layui-btn layui-btn-lg layui-bg-blue" lay-submit lay-filter="add-form" style="border-radius:.08rem">保  存</button>
                </div>
              </div>`,
    success: function (layero, index) {
      form.render()
      if (type == '2') {
        G_id = res.id
        //给表单赋值
        form.val("saveForm", {
          "knowledge_base_name": res.engName,
          "cnName": res.cnName,
          "type": res.type,
          "kbInfo": res.kbInfo,
        });
      }
    }
  });
}

// 上传文件弹窗
function showUploadWindow() {
  layer.open({
    type: 1,
    shadeClose: false,
    move: false,
    closeBtn: 2,
    skin: 'default-layer',
    area: ['10.35rem', '8rem'],
    title: '上传文件',
    content: `<div id="upload-from" class="layui-form" style="padding: .2rem 0.6rem;color:#E4EFFF">
                <div class="layui-form-item">
                  <div class="layui-inline">
                    <div class="layui-form-item">
                      <div>单段文本最大长度：</div>
                      <div style="margin-top: .1rem;">
                        <input type="number" name="chunk_size" lay-affix="number" step="1" class="layui-input" value="500">
                      </div>
                    </div>
                  </div>
                  <div class="layui-inline">
                    <div class="layui-form-item">
                      <div>相邻文本重合长度：</div>
                      <div style="margin-top: .1rem;">
                        <input type="number" name="chunk_overlap" lay-affix="number" step="1" class="layui-input" value="50">
                      </div>
                    </div>
                  </div>
                  <div class="layui-inline" style="color: #fff">
                    <div class="layui-form-item">
                      <input type="checkbox" name="zh_title_enhance" lay-text="开启中文标题加强">
                    </div>
                  </div>
                </div>
                <div class="layui-form-item">
                  <div class="upload-btn" onclick="uploadFile()">
                    <div>支持HTML, MHTML, MD, JSON, JSONL, CSV, PDF, PNG, JPG, JPEG, BMP, EML, MSG, EPUB, XLSX, XLS, XLSD, IPYNB, ODT, PY, RST, RTF, SRT, TOML, TSV,  DOCX, DOC, XML, PPT, PPTX, ENEX, TXT, HTM不超过200M</div>
                    <div style="text-align:center;margin-top:.2rem">
                      <i class="layui-icon layui-icon-upload"></i>
                      点击上传
                    </div>
                  </div>
                  <input type="text" id="importFilePath" style="display:none">
                  <input id="importFile" type="file" style="display:none" multiple onchange="handleFiles(this.files)">
                  <ul id="fileList" style="margin-top:.1rem;height:4rem;overflow:auto"></ul>
                </div>
                <div class="layui-form-item" style="position: absolute;bottom: 0;width: calc(100% - 1.2rem);text-align: center;">
                  <button id="upload-form" type="submit" class="layui-btn layui-btn-lg layui-bg-blue" lay-submit lay-filter="upload-form" style="border-radius:.08rem">添加文件至知识库</button>
                </div>
              </div>`,
    success: function (layero, index) {
      form.render()
    }
  });
}

/**上传文件 */
function uploadFile() {
  $("#importFile").click();
}

function handleFiles(files) {
  Array.from(files).forEach((file, index) => {
    // 获取文件名及其后缀
    var fileName = file.name;
    var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1).toUpperCase();

    // 允许的后缀列表
    var allowedExtensions = ['HTML', 'MHTML', 'MD', 'JSON', 'JSONL', 'CSV', 'PDF', 'PNG', 'JPG', 'JPEG', 'BMP', 'EML', 'MSG', 'EPUB', 'XLSX', 'XLS', 'XLSD', 'IPYNB', 'ODT', 'PY', 'RST', 'RTF', 'SRT', 'TOML', 'TSV', 'DOCX', 'DOC', 'XML', 'PPT', 'PPTX', 'ENEX', 'TXT', 'HTM'];

    // 检查文件后缀是否在允许的后缀列表中
    if (allowedExtensions.indexOf(fileExtension) === -1) {
      layer.msg('请上传正确的文件类型');
      return false
    } else {
      G_fileArr.push(file)
    }
  });

  updateFileList(G_fileArr)
}

function updateFileList(arr) {
  var str = ''
  $.each(arr, function (index, file) {

    var fileSize = (file.size / 1024).toFixed(2) + 'KB'; // 计算文件大小（单位为KB）

    // 设置列表项内容
    str += `  <li style="display:flex;align-items: center;padding: .05rem 0;">
                    <div>${file.name}</div>
                    <div style="margin: 0 auto auto 0.2rem;">${fileSize}</div>
                    <div data-index='${index}' class="deleteBtn" style="cursor:pointer">
                      <i class="layui-icon layui-icon-close"></i>
                    </div>
                  </li>`
  })
  // 添加到文件列表容器中
  $('#fileList').empty().append(str);
  $('.deleteBtn').click(function (e) {
    var fileIndex = parseInt(e.currentTarget.getAttribute('data-index'), 10)
    G_fileArr.splice(fileIndex, 1);
    $(this).parent().remove()
    updateFileList(G_fileArr)
  })
}

/**end */

// 删除文件弹窗
function showDelFileWindow(isSingle, type, res) {
  // type:1向量库中删除 2知识库中删除 isSingle: 1单个 2多个
  layer.confirm('是否从' + (type == '1' ? '向量库中' : '知识库中') + '删除？', {
    btn: ['确认', '取消'] //按钮
  }, function () {
    var fileArr = []
    var ids = []
    if (isSingle == '1') {
      fileArr = [res.fileName]
    } else {
      var tableStatus = table.checkStatus('table')
      var checkData = tableStatus.data
      if (checkData.length == 0) {
        layer.msg('请选择文件')
        return false
      } else {
        $.each(checkData, function (i, e) {
          fileArr.push(e.fileName)
          ids.push(e.id)
        })
      }
    }
    var knowledgebase_name = $('.knowledgebase-list li.active').data('engname')
    var params = {
      "knowledge_base_name": knowledgebase_name,
      "file_names": fileArr,
      "delete_content": type == '2',
      "not_refresh_vs_cache": false
    }
    layer.closeAll()
    layer.load(0)
    $.ajax({
      url: '/langchain' + '/knowledge_base/delete_docs',
      type: 'post',
      contentType: "application/json",
      data: JSON.stringify(params),
      success: function (result) {
        var code = result.code
        if (code == 200) {
          if (type == '2') {
            AjaxRequest('/kb/file/delete', callBack, {
              ids: isSingle == '1' ? [res.id] : ids
            }, 'post')

            function callBack(result) {
              if (result.status == 200) {
                layer.closeAll()
                layer.msg('删除成功')
                getKnowledgebaseFilesList($('.knowledgebase-list li.active').data('id'))
              } else {
                layer.msg('删除失败')
              }
            }
          } else {
            layer.closeAll()
            layer.msg('删除成功')
          }
        }
      }
    });
  });
}

// 保存知识库
function saveKnowledgebase(data) {
  AjaxRequest('/kb/save', callBack, data, 'post')

  function callBack(result) {
    if (result.status == 200) {
      layer.closeAll()
      layer.msg('保存成功')
      initKnowledgebaseList()
    } else {
      layer.msg('保存失败')
    }
  }
}

// 删除知识库
function showDelWindow(res) {
  layer.confirm('确认是否删除?', {
    btn: ['确认', '取消'] //按钮
  }, function () {
    // $.ajax({
    //   url: '/langchain' + '/knowledge_base/delete_knowledge_base',
    //   type: 'post',
    //   contentType: "application/json",
    //   data: JSON.stringify(res.engName),
    //   success: function (result) {
    //     var code = result.code
    //     if (code == 200) {
    AjaxRequest('/kb/delete?id=' + res.id, callBack)

    function callBack(result) {
      if (result.status == 200) {
        layer.msg('删除成功')
        initKnowledgebaseList()
      } else {
        layer.msg('删除失败')
      }
    }
    // }
    // }
  });
  // })
}

// 重新添加至向量库弹窗
function showReUploadFileWindow(type, res) { //1单个 2批量
  layer.confirm('确认是否重新添加至向量库?', {
    btn: ['确认', '取消'] //按钮
  }, function () {
    var fileArr = []
    if (type == '1') {
      fileArr = [res.fileName]
    } else {
      var tableStatus = table.checkStatus('table')
      var checkData = tableStatus.data
      if (checkData.length == 0) {
        layer.msg('请选择文件')
        return false
      } else {
        $.each(checkData, function (i, e) {
          fileArr.push(e.fileName)
        })
      }
    }
    var params = {
      "knowledge_base_name": $('.knowledgebase-list li.active').data('engname'),
      "file_names": fileArr,
    }
    layer.closeAll()
    layer.load(0)
    $.ajax({
      url: '/langchain' + '/knowledge_base/update_docs',
      type: 'post',
      contentType: "application/json",
      data: JSON.stringify(params),
      success: function (result) {
        var code = result.code
        if (code == 200) {
          layer.closeAll()
          initKnowledgebaseList()
          layer.msg('操作成功')
        }
      }
    })
  })
}